/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sge.Utilidades.Reportes;

import java.awt.Dialog;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import sge.Datos.FabricaConexion;

/**
 *
 * @author victor
 */
public class GeneradorReporte {

    private static final Logger LOG = Logger.getLogger(GeneradorReporte.class.getName());

    private ArrayList<Reporte> reportes = new ArrayList<>();

    public GeneradorReporte() {
        reportes.add(new Reporte("listaAsistentesPorEvento.jasper", "Listado de Asistentes por evento", null));
        reportes.add(new Reporte("listaExpositoresPorTitulo.jasper", "Listado de Expositores por título", null));
        reportes.add(new Reporte("ReporteListaExpositores.jasper", "Lista expositores.", null));
    }
    
    public ArrayList<Reporte> getReportes() {
        return reportes;
    }    
    
    private InputStream cargarFormato(Reporte reporte) {

        return this.getClass().getResourceAsStream(
                reporte.getRecurso());
    }

    public void desplegarReporte(Reporte reporte) {

        InputStream in = cargarFormato(reporte);
        JasperPrint jasperPrint = generarReporte(reporte);

        JasperViewer visor = new JasperViewer(jasperPrint, false);
        visor.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
        // visor.setZoomRatio(0.85F);
        visor.setTitle("Reporte SGE | " + reporte.getTitulo());
        visor.setVisible(true);
    }

    public JasperPrint generarReporte(Reporte reporte) {

        InputStream in = cargarFormato(reporte);
        JasperPrint jasperPrint = null;
        try {
            jasperPrint = JasperFillManager.fillReport(in, reporte.getParametros(),
                    FabricaConexion.getInstancia().getConexion());
        } catch (JRException ex) {
            LOG.log(Level.SEVERE, null, ex);
        }
        
        return jasperPrint;
    }
}
